package com.example.studyllm.service.rag;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.studyllm.entity.rag.RagEmbeddingStore;
import com.example.studyllm.mapper.rag.RagEmbeddingStoreMapper;
import com.example.studyllm.service.base.BaseServiceImpl;
import com.example.studyllm.utils.BeanUtils;
import com.example.studyllm.vo.base.PageResultVO;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollectionUtil;

/**
 * <p>
 *   service实现类
 * </p>
 *
 * @author kw
 * @since 2025-02-05 15:38:12.849672
 */
@Service
public class RagEmbeddingStoreService extends BaseServiceImpl<RagEmbeddingStoreMapper, RagEmbeddingStore> {


    public Boolean addRagEmbeddingStore(RagEmbeddingStore ragEmbeddingStore) {
        return this.save(ragEmbeddingStore);
    }

    public Boolean updateRagEmbeddingStoreById(RagEmbeddingStore ragEmbeddingStore) {
        return this.updateById(ragEmbeddingStore);
    }

    public PageResultVO<RagEmbeddingStore> getPage(RagEmbeddingStore pageParam) {

        LambdaQueryWrapper<RagEmbeddingStore> lambda = new QueryWrapper<RagEmbeddingStore>().lambda();
        this.buildCondition(lambda, pageParam);
        lambda.orderBy(true, false, RagEmbeddingStore::getId);                
        PageResultVO<RagEmbeddingStore> resultPage = BeanUtils.changePage(RagEmbeddingStore.class, this.page(new Page<>(pageParam.getPageNo(), pageParam.getPageSize()), lambda));
        return resultPage;
    }
    /**
     * 构造查询条件
     *
     * @param lambda
     * @param param
     */
    private void buildCondition(LambdaQueryWrapper<RagEmbeddingStore> lambda, RagEmbeddingStore param) {
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getId()),RagEmbeddingStore::getId, param.getId());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getCode()),RagEmbeddingStore::getCode, param.getCode());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getName()),RagEmbeddingStore::getName, param.getName());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getSupplier()),RagEmbeddingStore::getSupplier, param.getSupplier());
        

            lambda.eq(ObjectUtil.isNotEmpty(param.getUserName()),RagEmbeddingStore::getUserName, param.getUserName());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getPassword()),RagEmbeddingStore::getPassword, param.getPassword());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getDataBase()),RagEmbeddingStore::getDataBase, param.getDataBase());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getTableName()),RagEmbeddingStore::getTableName, param.getTableName());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getDimensions()),RagEmbeddingStore::getDimensions, param.getDimensions());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getCtime()),RagEmbeddingStore::getCtime, param.getCtime());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getUtime()),RagEmbeddingStore::getUtime, param.getUtime());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getDeleteFlag()),RagEmbeddingStore::getDeleteFlag, param.getDeleteFlag());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getCby()),RagEmbeddingStore::getCby, param.getCby());
        
            lambda.eq(ObjectUtil.isNotEmpty(param.getUby()),RagEmbeddingStore::getUby, param.getUby());
        
    }
}